package Frames; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Iterator; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import Design.Product; import Design.Warehouse; import Read_Write.InputOutput; public class AdminPanel { private JFrame admin; private JLabel productlabel; private JTextField productbox; private JLabel pricelabel; private JTextField pricebox; private JLabel quantitylabel; private JTextField quantitybox; private JButton addprod; private JButton removeprod; private JTable table; private static DefaultTableModel tableModel; private JLabel idlabel; private JTextField idbox; private JButton search; private JButton stock; private Warehouse items; private InputOutput x; private Product p; private Iterator<Product> it; public AdminPanel() { admin = new JFrame("Admin Panel"); admin.setSize(500, 500); admin.setLayout(null); admin.setVisible(true); admin.setLocationRelativeTo(null); admin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); idlabel = new JLabel("Product ID: "); idlabel.setBounds(5, 10, 120, 20); admin.add(idlabel); idbox = new JTextField(); idbox.setBounds(70, 10, 150, 20); admin.add(idbox); productlabel = new JLabel("Product: "); productlabel.setBounds(5, 30, 120, 20); admin.add(productlabel); productbox = new JTextField(); productbox.setBounds(70, 30, 150, 20); admin.add(productbox); quantitylabel = new JLabel("Quantity: "); quantitylabel.setBounds(5, 50, 120, 20); admin.add(quantitylabel); quantitybox = new JTextField(); quantitybox.setBounds(70, 50, 150, 20); admin.add(quantitybox); pricelabel = new JLabel("Price: "); pricelabel.setBounds(5, 70, 180, 20); admin.add(pricelabel); pricebox = new JTextField(); pricebox.setBounds(70, 70, 150, 20); admin.add(pricebox); addprod = new JButton("Add Product"); addprod.setBounds(250, 10, 150, 25); admin.add(addprod); removeprod = new JButton("Remove Product"); removeprod.setBounds(250, 35, 150, 25); admin.add(removeprod); search = new JButton("Search"); search.setBounds(250, 60, 150, 25); admin.add(search); stock = new JButton("Change Stock"); stock.setBounds(250, 85, 150, 25); admin.add(stock); JScrollPane pane = new JScrollPane(); table = new JTable(); tableModel = new DefaultTableModel( new Object[] { "Product ID", "Product Name", "Product Quantity", "Product Price" }, 0); table.setModel(tableModel); pane.setViewportView(table); pane.setBounds(50, 130, 400, 180); admin.add(pane); items = new Warehouse(); x = new InputOutput(); items = x.deserWarehouse(); addprod.addActionListener(new AddActionListener()); removeprod.addActionListener(new RemoveActionListener()); search.addActionListener(new SearchBActionListener()); stock.addActionListener(new StockBActionListener()); } public String[] memoprod() { String[] res = new String[4]; res[0] = idbox.getText(); res[1] = productbox.getText(); res[2] = quantitybox.getText(); res[3] = pricebox.getText(); return res; } private void printProduct(Product p) { Object[] row = { p.getID(), p.getName(), p.getQuantity(), p.getPrice() }; ((DefaultTableModel) table.getModel()).addRow(row); } class AddActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { String[] r = memoprod(); p = new Product(Integer.parseInt(r[0]), r[1], Integer.parseInt(r[2]), Integer.parseInt(r[3])); items.addProduct(p); printProduct(p); x.serWarehouse(items); } } class RemoveActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { int selRow = table.getSelectedRow(); if (selRow != -1) { try { it = items.getProductsInOrder(); while (it.hasNext()) { p = it.next(); if (p.getID() == Integer.parseInt(idbox.getText())) { items.removeProduct(p); // printProduct(p); } } } catch (NumberFormatException e1) { JOptionPane.showMessageDialog(null, "Eroare!"); } DefaultTableModel model = (DefaultTableModel) table.getModel(); model.removeRow(selRow); } x.serWarehouse(items); } } class SearchBActionListener implements ActionListener { public void actionPerformed(ActionEvent e) { it = items.getProductsInOrder(); boolean y = false; try { while (it.hasNext()) { p = it.next(); if (p.getName().equals(productbox.getText())) { y = true; } } if (y == false) { JOptionPane.showMessageDialog(null, "There is no product"); } else { JOptionPane.showMessageDialog(null, "Product found"); } } catch (Exception a) { JOptionPane.showMessageDialog(null, "Try Again"); } } } static int getRow(TableModel model, Object o) { int row = 0; for (int i = model.getRowCount() - 1; i >= 0; i--) { for (int j = model.getColumnCount() - 1; j >= 0; j--) { if (model.getValueAt(i, j).equals(o)) { row = i; } } } return row; } class StockBActionListener implements ActionListener { @Override public void actionPerformed(ActionEvent arg0) { String[] r = memoprod(); it = items.getProductsInOrder(); try { while (it.hasNext()) { Product prod = it.next(); if (prod.getID() == Integer.parseInt(r[0]) && prod.getName().equals(r[1])) { int row = getRow(getModel(), r[1]); // System.out.println(row); table.getModel().setValueAt(new Integer(prod.getQuantity() + Integer.parseInt(r[2])), row, 2); prod.setQuantity(new Integer(prod.getQuantity()) + Integer.parseInt(r[2])); } } } catch (Exception a) { JOptionPane.showMessageDialog(null, "There is no product with this ID!"); } x.serWarehouse(items); } } public static DefaultTableModel getModel() { return tableModel; } }